Some computer programming environments support function pointers, which are also referred to in some cases as routine pointers, subroutine pointers, or procedure pointers. A function pointer is a pointer to a cell in memory that contains a function address. Most modern instruction sets allow for an instruction that will do an indirect call (in addition to a normal direct call) using the function pointer directly as an operand. The function pointer operand contains the function address where control flow is to continue. The indirect call instruction will first load the function address stored at the function pointer and then call the first machine instruction at that location which is supposed to be the beginning of executable code (a user intentionally authored) within a computer system's memory. A routine call (a.k.a. “invocation”) made through a function pointer is also known as an “indirect” call because the function is invoked indirectly through an address stored in a pointer variable instead of being invoked directly through a fixed name or a fixed address known at compile time. As with direct function calls, a system may pass arguments to an indirectly invoked routine, may undergo side effects from execution of the routine, and may receive a return value from the routine.